#!/bin/bash

# 检测是否为 CentOS 7.x 系统
echo "正在检测操作系统版本..."
if [ -f /etc/os-release ]; then
    source /etc/os-release
    if [[ "$ID" == "centos" && "$VERSION_ID" =~ ^7\..*$ ]]; then
        echo "检测到 CentOS 7.x 系统，继续执行脚本..."
    else
        echo "当前系统不是 CentOS 7.x，脚本将退出。"
        exit 1
    fi
else
    echo "无法检测操作系统版本，请确保脚本运行在 CentOS 系统上。"
    exit 1
fi

# 下载 Docker-ce 的 yum 源
echo "正在下载 Docker-ce 的 yum 源..."
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
if [ $? -ne 0 ]; then
    echo "下载 Docker-ce 的 yum 源失败，请检查网络连接。"
    exit 1
fi

# 安装 Docker
echo "正在安装 Docker..."
sudo yum -y install docker-ce
if [ $? -ne 0 ]; then
    echo "Docker 安装失败，请检查 yum 源配置。"
    exit 1
fi

# 启动 Docker 服务并设置开机自启动
echo "正在启动 Docker 服务..."
sudo systemctl start docker
if [ $? -ne 0 ]; then
    echo "启动 Docker 服务失败，请检查系统日志。"
    exit 1
fi

echo "正在设置 Docker 开机自启动..."
sudo systemctl enable docker
if [ $? -ne 0 ]; then
    echo "设置 Docker 开机自启动失败，请检查权限。"
    exit 1
fi

# 查看 Docker 服务状态
echo "正在检查 Docker 服务状态..."
sudo systemctl status docker
if [ $? -ne 0 ]; then
    echo "Docker 服务未正常运行，请检查配置。"
    exit 1
fi

# 安装 Docker Compose
echo "正在安装 Docker Compose..."
sudo wget https://gitee.com/linpop/docker-install/releases/download/1.0.0/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose
if [ $? -ne 0 ]; then
    echo "下载 Docker Compose 失败，请检查网络连接。"
    exit 1
fi

# 修改其为可执行文件
echo "正在配置 Docker Compose..."
sudo chmod +x /usr/local/bin/docker-compose
if [ $? -ne 0 ]; then
    echo "配置 Docker Compose 可执行权限失败，请检查权限。"
    exit 1
fi

# 刷新环境变量
hash -r

# 验证 docker-compose 是否可用
echo "正在验证 docker-compose 是否可用..."
if ! /usr/local/bin/docker-compose --version &> /dev/null; then
    echo "docker-compose 未正确安装，请检查安装步骤。"
    exit 1
fi

# 查看 Docker 和 Docker Compose 版本信息（绿色输出）
echo -e "\e[32m==============================\e[0m"
echo -e "\e[32mDocker 和 Docker Compose 版本信息：\e[0m"

# 提取 Docker 版本号
docker_version_output=$(docker -v 2>/dev/null)
if [[ -z "$docker_version_output" ]]; then
    echo "无法查看 Docker 版本信息，请检查安装是否成功。"
    exit 1
fi
docker_version=$(echo "$docker_version_output" | awk '{print $3}' | cut -d',' -f1)
echo -e "\e[32mDocker版本：${docker_version}\e[0m"

# 提取 Docker Compose 版本号
docker_compose_version_output=$(/usr/local/bin/docker-compose --version 2>/dev/null)
if [[ -z "$docker_compose_version_output" ]]; then
    echo "无法查看 Docker Compose 版本信息，请检查安装是否成功。"
    exit 1
fi
docker_compose_version=$(echo "$docker_compose_version_output" | awk '{print $4}')
echo -e "\e[32mDocker Compose版本：${docker_compose_version}\e[0m"

echo -e "\e[32m==============================\e[0m"
echo -e "\e[32mDocker 和 Docker Compose 安装与配置完成！\e[0m"